import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Clase que muestra una flecha con la que el jugador apuntara para disparar
 * 
 * @author Cesar Antonio Medina Moreno
 * @version 01/12/2012
 */
public class flecha extends Actor
{
    int cont = 0;
    int rand;
    boolean band = true;
    
    /**
     * Funcion principal de la clase
     */
    public void act() 
    {
        Rotacion();
        
        if(band && cont>=32)
        {
            creaBurbuja();
            band = false;
        }
        
        if(Greenfoot.isKeyDown("space") && cont >= 32 && band==false)
        {   
            Actor c = getOneIntersectingObject(Ball.class);
            
            if(c!=null)
            c.setRotation(getRotation());
            
            band = true;
            cont = 0;
        }
        cont++;
    }    
    
    /**
     * Constructor de la clase que pone la dirreccion del objeto viendo hacia arriba
     */
    public flecha()
    {
        turn(-90);//gira -90 grados
    }
    
    
    public void habilita()
    {
        band=true;
    }
    
    /**
     * Funcion que verifica si se presiono una tecla y gira la imagen del objeto
     */
    public void Rotacion()
    {
        if(Greenfoot.isKeyDown("left") && getRotation()>209)//si se presiono tecla izquierda gira
        turn(-1);
        if(Greenfoot.isKeyDown("right") && getRotation()<330)//si se presiono tecla derecha gira
        turn(1);
    }
    
    /**
     * Funcion que crea una burbuja y la posiciona debajo del objeto flecha
     */
    public void creaBurbuja()
    {
        ballb b = new ballb();
        ballr r = new ballr();
        ballg g = new ballg();
        balln n = new balln();
        ballPow p = new ballPow();
        World m = super.getWorld();
            
            switch(rand=Greenfoot.getRandomNumber(12))//se crea la burbuja que se va a disparar
            {
                case 0:
                case 5:
                case 8:
                    m.addObject(b,getX(),getY());
                    break;
                case 1:
                case 6:
                case 9:
                    m.addObject(r,getX(),getY());
                    break;
                case 2:
                case 7:
                case 10:
                    m.addObject(g,getX(),getY());
                    break;
                case 3:
                case 11:
                    m.addObject(n,getX(),getY());
                    break;
                case 4:
                    m.addObject(p,getX(),getY());
                    break;
            }
    }
}
